{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1*1=1    \n",
      "1*2=2    2*2=4    \n",
      "1*3=3    2*3=6    3*3=9    \n",
      "1*4=4    2*4=8    3*4=12   4*4=16   \n",
      "1*5=5    2*5=10   3*5=15   4*5=20   5*5=25   \n",
      "1*6=6    2*6=12   3*6=18   4*6=24   5*6=30   6*6=36   \n",
      "1*7=7    2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49   \n",
      "1*8=8    2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64   \n",
      "1*9=9    2*9=18   3*9=27   4*9=36   5*9=45   6*9=54   7*9=63   8*9=72   9*9=81   \n",
      "--------------------------------------------------------------------------------\n"
     ]
    }
   ],
   "source": [
    "# 九九乘法表 \n",
    "# while实现 方式一\n",
    "# 定义变量i初始值为1\n",
    "i = 1 \n",
    "# 循环条件，当i<=9时，持续循环\n",
    "while i <= 9:  \n",
    "    # 定义a为1，每次循环a从1开始\n",
    "    a = 1       \n",
    "    # 循环条件，当a<=i时，持续循环\n",
    "    while a<= i: \n",
    "        # 使用format替换和占位，使得输出结果整齐（左对齐5位）\n",
    "        # end=''打印不换行\n",
    "        print('{}*{}={:<5}'.format(a, i, a*i),end='')  \n",
    "        # 计算结束a值加1\n",
    "        a += 1\n",
    "    # 计算结束i值加1  \n",
    "    i += 1\n",
    "    # 内层while结束，换行\n",
    "    print()\n",
    "# 分割线\n",
    "print('-' * 80)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n",
      "1*9=9    2*9=18   3*9=27   4*9=36   5*9=45   6*9=54   7*9=63   8*9=72   9*9=81   \n",
      "1*8=8    2*8=16   3*8=24   4*8=32   5*8=40   6*8=48   7*8=56   8*8=64   \n",
      "1*7=7    2*7=14   3*7=21   4*7=28   5*7=35   6*7=42   7*7=49   \n",
      "1*6=6    2*6=12   3*6=18   4*6=24   5*6=30   6*6=36   \n",
      "1*5=5    2*5=10   3*5=15   4*5=20   5*5=25   \n",
      "1*4=4    2*4=8    3*4=12   4*4=16   \n",
      "1*3=3    2*3=6    3*3=9    \n",
      "1*2=2    2*2=4    \n",
      "1*1=1    \n"
     ]
    }
   ],
   "source": [
    "# 九九乘法表 \n",
    "# while实现 方式二\n",
    "\n",
    "# 分割线\n",
    "print('- ' * 40)\n",
    "# 定义变量i初始值为9\n",
    "i = 9 \n",
    "# 循环条件，当i>=1时，持续循环\n",
    "while i >= 1:  \n",
    "    # 定义a为1，每次循环a从1开始\n",
    "    a = 1       \n",
    "    # 循环条件，当a<=i时，持续循环\n",
    "    while a<= i: \n",
    "        # 使用format替换和占位，使得输出结果整齐（左对齐5位）\n",
    "        # end=''打印不换行\n",
    "        print('{}*{}={:<5}'.format(a, i, a*i),end='')  \n",
    "        # 计算结束a值加1\n",
    "        a += 1\n",
    "    # 计算结束i值加1  \n",
    "    i -= 1\n",
    "    # 内层while结束，换行\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                                                1*1=1   \n",
      "                                                        2*2=4   1*2=2   \n",
      "                                                3*3=9   2*3=6   1*3=3   \n",
      "                                        4*4=16  3*4=12  2*4=8   1*4=4   \n",
      "                                5*5=25  4*5=20  3*5=15  2*5=10  1*5=5   \n",
      "                        6*6=36  5*6=30  4*6=24  3*6=18  2*6=12  1*6=6   \n",
      "                7*7=49  6*7=42  5*7=35  4*7=28  3*7=21  2*7=14  1*7=7   \n",
      "        8*8=64  7*8=56  6*8=48  5*8=40  4*8=32  3*8=24  2*8=16  1*8=8   \n",
      "9*9=81  8*9=72  7*9=63  6*9=54  5*9=45  4*9=36  3*9=27  2*9=18  1*9=9   \n",
      "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n"
     ]
    }
   ],
   "source": [
    "# 九九乘法表 \n",
    "# while实现 方式三\n",
    "\n",
    "# 定义变量i初始值为1\n",
    "i = 1 \n",
    "# 循环条件，当i<=9时，持续循环\n",
    "while i <= 9:  \n",
    "    # 定义a为9，每次循环a从9开始\n",
    "    a = 9       \n",
    "    # 循环条件，当a>0时，持续循环\n",
    "    while a > 0: \n",
    "        # 当a<=i时打印\n",
    "        if a <= i:\n",
    "            # 使用format替换和占位，使得输出结果整齐\n",
    "            # end=''打印不换行\n",
    "            print('{}*{}={:<4}'.format(a, i, a*i),end='') \n",
    "            \n",
    "        # 否则，打印空格填充(8个空格)\n",
    "        else:\n",
    "            print(' ' * 8, end = '')\n",
    "            \n",
    "        # a值减去1\n",
    "        a -= 1\n",
    "        \n",
    "    # 计算结束i值加1  \n",
    "    i += 1\n",
    "    # 内层while结束，换行\n",
    "    print()\n",
    "# 分割线\n",
    "print('- ' * 40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n",
      "9*9=81  8*9=72  7*9=63  6*9=54  5*9=45  4*9=36  3*9=27  2*9=18  1*9=9   \n",
      "        8*8=64  7*8=56  6*8=48  5*8=40  4*8=32  3*8=24  2*8=16  1*8=8   \n",
      "                7*7=49  6*7=42  5*7=35  4*7=28  3*7=21  2*7=14  1*7=7   \n",
      "                        6*6=36  5*6=30  4*6=24  3*6=18  2*6=12  1*6=6   \n",
      "                                5*5=25  4*5=20  3*5=15  2*5=10  1*5=5   \n",
      "                                        4*4=16  3*4=12  2*4=8   1*4=4   \n",
      "                                                3*3=9   2*3=6   1*3=3   \n",
      "                                                        2*2=4   1*2=2   \n",
      "                                                                1*1=1   \n",
      "                                                                        \n"
     ]
    }
   ],
   "source": [
    "# 九九乘法表 \n",
    "# while实现 方式四\n",
    "# 分割线\n",
    "print('- ' * 40)\n",
    "# 定义变量i初始值为9\n",
    "i = 9 \n",
    "# 循环条件，当i>=0时，持续循环\n",
    "while i >= 0:  \n",
    "    # 定义a为9，每次循环a从9开始\n",
    "    a = 9       \n",
    "    # 循环条件，当a>0时，持续循环\n",
    "    while a > 0: \n",
    "        # 当a<=i时打印\n",
    "        if a <= i:\n",
    "            # 使用format替换和占位，使得输出结果整齐\n",
    "            # end=''打印不换行\n",
    "            print('{}*{}={:<4}'.format(a, i, a*i),end='') \n",
    "            \n",
    "        # 否则，打印空格填充(8个空格)\n",
    "        else:\n",
    "            print(' ' * 8, end = '')\n",
    "            \n",
    "        # a值减去1\n",
    "        a -= 1\n",
    "        \n",
    "    # 计算结束i值加1  \n",
    "    i -= 1\n",
    "    # 内层while结束，换行\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1*1=1   \n",
      "1*2=2   2*2=4   \n",
      "1*3=3   2*3=6   3*3=9   \n",
      "1*4=4   2*4=8   3*4=12  4*4=16  \n",
      "1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  \n",
      "1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  \n",
      "1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  \n",
      "1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  \n",
      "1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  \n",
      "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n"
     ]
    }
   ],
   "source": [
    "# 使用for ...in，方式一\n",
    "# 生成1到9，遍历\n",
    "for i in range(1,10):\n",
    "    # 生成1到i+1的整数，并遍历\n",
    "    for j in range(1,i+1):\n",
    "        # 使用format替换和占位，使得输出结果整齐,end=''打印不换行\n",
    "        print('{}*{}={:<4}'.format(j, i, j*i),end='')\n",
    "    # 换行\n",
    "    print()\n",
    "# 分割线\n",
    "print('- '* 40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n",
      "1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  \n",
      "1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  \n",
      "1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  \n",
      "1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  \n",
      "1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  \n",
      "1*4=4   2*4=8   3*4=12  4*4=16  \n",
      "1*3=3   2*3=6   3*3=9   \n",
      "1*2=2   2*2=4   \n",
      "1*1=1   \n"
     ]
    }
   ],
   "source": [
    "# 使用for ...in，方式二\n",
    "# 分割线\n",
    "print('- '* 40)\n",
    "# 生成9到1，并遍历\n",
    "for i in range(9, 0, -1):\n",
    "    # 生成1到i+1的整数，并遍历\n",
    "    for j in range(1,i+1):\n",
    "        # 使用format替换和占位，使得输出结果整齐,end=''打印不换行\n",
    "        print('{}*{}={:<4}'.format(j, i, j*i),end='')\n",
    "    # 换行\n",
    "    print()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                                                                1*1=1   \n",
      "                                                        2*2=4   1*2=2   \n",
      "                                                3*3=9   2*3=6   1*3=3   \n",
      "                                        4*4=16  3*4=12  2*4=8   1*4=4   \n",
      "                                5*5=25  4*5=20  3*5=15  2*5=10  1*5=5   \n",
      "                        6*6=36  5*6=30  4*6=24  3*6=18  2*6=12  1*6=6   \n",
      "                7*7=49  6*7=42  5*7=35  4*7=28  3*7=21  2*7=14  1*7=7   \n",
      "        8*8=64  7*8=56  6*8=48  5*8=40  4*8=32  3*8=24  2*8=16  1*8=8   \n",
      "9*9=81  8*9=72  7*9=63  6*9=54  5*9=45  4*9=36  3*9=27  2*9=18  1*9=9   \n",
      "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n"
     ]
    }
   ],
   "source": [
    "# 使用for ...in，方式三\n",
    "# 生成9到1，并遍历\n",
    "for i in range(9, 0, -1):\n",
    "    # 生成1到8的数\n",
    "    for j in range(1,i):\n",
    "        # 生成空格\n",
    "        print(' ' * 8, end = '')\n",
    "    # 生成10-i到1的整数，并遍历\n",
    "    for j in range(10-i, 0, -1):\n",
    "        a = 10-i\n",
    "        # 使用format替换和占位，使得输出结果整齐,end=''打印不换行\n",
    "        print('{}*{}={:<4}'.format(j, a, j*a),end='')\n",
    "    # 换行\n",
    "    print()\n",
    "# 分割线\n",
    "print('- '* 40)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \n",
      "9*9=81  8*9=72  7*9=63  6*9=54  5*9=45  4*9=36  3*9=27  2*9=18  1*9=9   \n",
      "        8*8=64  7*8=56  6*8=48  5*8=40  4*8=32  3*8=24  2*8=16  1*8=8   \n",
      "                7*7=49  6*7=42  5*7=35  4*7=28  3*7=21  2*7=14  1*7=7   \n",
      "                        6*6=36  5*6=30  4*6=24  3*6=18  2*6=12  1*6=6   \n",
      "                                5*5=25  4*5=20  3*5=15  2*5=10  1*5=5   \n",
      "                                        4*4=16  3*4=12  2*4=8   1*4=4   \n",
      "                                                3*3=9   2*3=6   1*3=3   \n",
      "                                                        2*2=4   1*2=2   \n",
      "                                                                1*1=1   \n"
     ]
    }
   ],
   "source": [
    "# 使用for ...in，方式四\n",
    "# 分割线\n",
    "print('- '* 40)\n",
    "# 生成 9 到 1 的数\n",
    "for i in range(9, 0, -1):\n",
    "    # 生成 9-i 到 1 个数  ，控制空格的输出\n",
    "    for j in range(9-i, 0, -1 ):\n",
    "        # 输出空格\n",
    "        print('{:<8}'.format(''), end= '')\n",
    "    # 生成 i 到 1 的数\n",
    "    for j in range(i, 0, -1):\n",
    "        # 输出表达式\n",
    "        print('{}*{}={:<4}'.format(j, i, j*i), end= '')\n",
    "    # 换行\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
